diff --git a/system/database/DB_utility.php b/system/database/DB_utility.php
index 57356ac..78398ea 100644
--- a/system/database/DB_utility.php
+++ b/system/database/DB_utility.php
@@ -249,7 +249,7 @@
 			$out .= $enclosure.str_replace($enclosure, $enclosure.$enclosure, $name).$enclosure.$delim;
 		}
 
-		$out = substr(rtrim($out), 0, -strlen($delim)).$newline;
+		$out = substr($out, 0, -strlen($delim)).$newline;
 
 		// Next blast through the result array and build out the rows
 		while ($row = $query->unbuffered_row('array'))
@@ -258,7 +258,7 @@
 			{
 				$out .= $enclosure.str_replace($enclosure, $enclosure.$enclosure, $item).$enclosure.$delim;
 			}
-			$out = substr(rtrim($out), 0, -strlen($delim)).$newline;
+			$out = substr($out, 0, -strlen($delim)).$newline;
 		}
 
 		return $out;
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index ce6c42b..c69283a 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -845,7 +845,7 @@
 	 */
 	public function image_process_imagemagick($action = 'resize')
 	{
-		//  Do we have a vaild library path?
+		// Do we have a vaild library path?
 		if ($this->library_path === '')
 		{
 			$this->set_error('imglib_libpath_invalid');
@@ -1010,7 +1010,7 @@
 		// going to have to figure out how to determine the color
 		// of the alpha channel in a future release.
 
-		$white	= imagecolorallocate($src_img, 255, 255, 255);
+		$white = imagecolorallocate($src_img, 255, 255, 255);
 
 		// Rotate it!
 		$dst_img = imagerotate($src_img, $this->rotation_angle, $white);
@@ -1333,7 +1333,7 @@
 		{
 			$y_axis += $this->orig_height - $fontheight - $this->wm_shadow_distance - ($fontheight / 2);
 		}
-		
+
 		// Set horizontal alignment
 		if ($this->wm_hor_alignment === 'R')
 		{
@@ -1343,13 +1343,13 @@
 		{
 			$x_axis += floor(($this->orig_width - ($fontwidth * strlen($this->wm_text))) / 2);
 		}
-		
+
 		if ($this->wm_use_drop_shadow)
 		{
 			// Offset from text
 			$x_shad = $x_axis + $this->wm_shadow_distance;
 			$y_shad = $y_axis + $this->wm_shadow_distance;
-				
+
 			/* Set RGB values for shadow
 			 *
 			 * First character is #, so we don't really need it.
@@ -1358,7 +1358,7 @@
 			 */
 			$drp_color = str_split(substr($this->wm_shadow_color, 1, 6), 2);
 			$drp_color = imagecolorclosest($src_img, hexdec($drp_color[0]), hexdec($drp_color[1]), hexdec($drp_color[2]));
-			
+
 			// Add the shadow to the source image
 			if ($this->wm_use_truetype)
 			{
@@ -1369,7 +1369,7 @@
 				imagestring($src_img, $this->wm_font_size, $x_shad, $y_shad, $this->wm_text, $drp_color);
 			}
 		}
-		
+
 		/* Set RGB values for text
 		 *
 		 * First character is #, so we don't really need it.
@@ -1388,7 +1388,7 @@
 		{
 			imagestring($src_img, $this->wm_font_size, $x_axis, $y_axis, $this->wm_text, $txt_color);
 		}
-		
+
 		// We can preserve transparency for PNG images
 		if ($this->image_type === 3)
 		{
@@ -1437,7 +1437,7 @@
 
 		switch ($image_type)
 		{
-			case 1 :
+			case 1:
 				if ( ! function_exists('imagecreatefromgif'))
 				{
 					$this->set_error(array('imglib_unsupported_imagecreate', 'imglib_gif_not_supported'));
@@ -1445,7 +1445,7 @@
 				}
 
 				return imagecreatefromgif($path);
-			case 2 :
+			case 2:
 				if ( ! function_exists('imagecreatefromjpeg'))
 				{
 					$this->set_error(array('imglib_unsupported_imagecreate', 'imglib_jpg_not_supported'));
@@ -1453,7 +1453,7 @@
 				}
 
 				return imagecreatefromjpeg($path);
-			case 3 :
+			case 3:
 				if ( ! function_exists('imagecreatefrompng'))
 				{
 					$this->set_error(array('imglib_unsupported_imagecreate', 'imglib_png_not_supported'));
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 15be738..5c2c4d9 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -29,6 +29,7 @@
 -  Fixed a bug (#3823) - :doc:`Session Library <libraries/sessions>` drivers Redis and Memcached didn't properly handle locks that are blocking the request for more than 30 seconds.
 -  Fixed a bug (#3846) - :doc:`Image Manipulation Library <libraries/image_lib>` method `image_mirror_gd()` didn't properly initialize its variables.
 -  Fixed a bug (#3854) - `field_data()` didn't work properly with the Oracle (OCI8) database driver.
+-  Fixed a bug in the :doc:`Database Utility Class <database/utilities>` method ``csv_from_result()`` didn't work with a whitespace CSV delimiter.
 
 Version 3.0.0
 =============
diff --git a/user_guide_src/source/tutorial/news_section.rst b/user_guide_src/source/tutorial/news_section.rst
index 688f2cb..286d620 100644
--- a/user_guide_src/source/tutorial/news_section.rst
+++ b/user_guide_src/source/tutorial/news_section.rst
@@ -15,10 +15,9 @@
 are the place where you retrieve, insert, and update information in your
 database or other data stores. They represent your data.
 
-Open up the application/models directory and create a new file called
-News_model.php and add the following code. Make sure you've configured
-your database properly as described
-:doc:`here <../database/configuration>`.
+Open up the *application/models/* directory and create a new file called
+*News_model.php* and add the following code. Make sure you've configured
+your database properly as described :doc:`here <../database/configuration>`.
 
 ::
 
@@ -37,8 +36,8 @@
 ``$this->db`` object.
 
 Before querying the database, a database schema has to be created.
-Connect to your database and run the SQL command below. Also add some
-seed records.
+Connect to your database and run the SQL command below (MySQL).
+Also add some seed records.
 
 ::
 
@@ -75,7 +74,7 @@
 
 With this code you can perform two different queries. You can get all
 news records, or get a news item by its `slug <#>`_. You might have
-noticed that the $slug variable wasn't sanitized before running the
+noticed that the ``$slug`` variable wasn't sanitized before running the
 query; :doc:`Query Builder <../database/query_builder>` does this for you.
 
 Display the news
@@ -83,9 +82,9 @@
 
 Now that the queries are written, the model should be tied to the views
 that are going to display the news items to the user. This could be done
-in our pages controller created earlier, but for the sake of clarity, a
-new "news" controller is defined. Create the new controller at
-application/controllers/News.php.
+in our ``Pages`` controller created earlier, but for the sake of clarity,
+a new ``News`` controller is defined. Create the new controller at
+*application/controllers/News.php*.
 
 ::
 
@@ -96,6 +95,7 @@
 		{
 			parent::__construct();
 			$this->load->model('news_model');
+			$this->load->helper('url_helper');
 		}
 
 		public function index()
@@ -113,11 +113,13 @@
 created earlier. First, the ``__construct()`` method: it calls the
 constructor of its parent class (``CI_Controller``) and loads the model,
 so it can be used in all other methods in this controller.
+It also loads a collection of :doc:`URL Helper <../helpers/url_helper>`
+functions, because we'll use one of them in a view later.
 
-Next, there are two methods to view all news items and one for a
-specific news item. You can see that the $slug variable is passed to the
-model's method in the second method. The model is using this slug to
-identify the news item to be returned.
+Next, there are two methods to view all news items and one for a specific
+news item. You can see that the ``$slug`` variable is passed to the model's
+method in the second method. The model is using this slug to identify the
+news item to be returned.
 
 Now the data is retrieved by the controller through our model, but
 nothing is displayed yet. The next thing to do is passing this data to
@@ -136,9 +138,9 @@
 	}
 
 The code above gets all news records from the model and assigns it to a
-variable. The value for the title is also assigned to the $data['title']
+variable. The value for the title is also assigned to the ``$data['title']``
 element and all data is passed to the views. You now need to create a
-view to render the news items. Create application/views/news/index.php
+view to render the news items. Create *application/views/news/index.php*
 and add the next piece of code.
 
 ::
@@ -151,20 +153,20 @@
 		<div class="main">
 			<?php echo $news_item['text']; ?>
 		</div>
-		<p><a href="<?php echo $news_item['slug']; ?>">View article</a></p>
+		<p><a href="<?php echo site_url('news/'.$news_item['slug']); ?>">View article</a></p>
 
 	<?php endforeach; ?>
 
 Here, each news item is looped and displayed to the user. You can see we
-wrote our template in PHP mixed with HTML. If you prefer to use a
-template language, you can use CodeIgniter's :doc:`Template
+wrote our template in PHP mixed with HTML. If you prefer to use a template
+language, you can use CodeIgniter's :doc:`Template
 Parser <../libraries/parser>` class or a third party parser.
 
 The news overview page is now done, but a page to display individual
 news items is still absent. The model created earlier is made in such
 way that it can easily be used for this functionality. You only need to
 add some code to the controller and create a new view. Go back to the
-news controller and update ``view()`` with the following:
+``News`` controller and update ``view()`` with the following:
 
 ::
 
@@ -198,12 +200,12 @@
 Routing
 -------
 
-Because of the wildcard routing rule created earlier, you need an
-extra route to view the controller that you just made. Modify your
-routing file (application/config/routes.php) so it looks as follows.
-This makes sure the requests reaches the news controller instead of
-going directly to the pages controller. The first line routes URI's with
-a slug to the view method in the news controller.
+Because of the wildcard routing rule created earlier, you need an extra
+route to view the controller that you just made. Modify your routing file
+(*application/config/routes.php*) so it looks as follows.
+This makes sure the requests reaches the ``News`` controller instead of
+going directly to the ``Pages`` controller. The first line routes URI's
+with a slug to the ``view()`` method in the ``News`` controller.
 
 ::
 
diff --git a/user_guide_src/source/tutorial/static_pages.rst b/user_guide_src/source/tutorial/static_pages.rst
index e948d30..6662147 100644
--- a/user_guide_src/source/tutorial/static_pages.rst
+++ b/user_guide_src/source/tutorial/static_pages.rst
@@ -37,24 +37,24 @@
 	        }
 	}
 
-You have created a class named "pages", with a view method that accepts
-one argument named $page. The pages class is extending the
-CI_Controller class. This means that the new pages class can access the
-methods and variables defined in the CI_Controller class
-(system/core/Controller.php).
+You have created a class named ``Pages``, with a view method that accepts
+one argument named ``$page``. The ``Pages`` class is extending the
+``CI_Controller`` class. This means that the new pages class can access the
+methods and variables defined in the ``CI_Controller`` class
+(*system/core/Controller.php*).
 
 The **controller is what will become the center of every request** to
 your web application. In very technical CodeIgniter discussions, it may
 be referred to as the *super object*. Like any php class, you refer to
-it within your controllers as $this. Referring to $this is how you will
-load libraries, views, and generally command the framework.
+it within your controllers as ``$this``. Referring to ``$this`` is how
+you will load libraries, views, and generally command the framework.
 
 Now you've created your first method, it's time to make some basic page
 templates. We will be creating two "views" (page templates) that act as
 our page footer and header.
 
-Create the header at application/views/templates/header.php and add the
-following code.
+Create the header at *application/views/templates/header.php* and add
+the following code:
 
 ::
 
@@ -68,13 +68,13 @@
 
 The header contains the basic HTML code that you'll want to display
 before loading the main view, together with a heading. It will also
-output the $title variable, which we'll define later in the controller.
-Now create a footer at application/views/templates/footer.php that
+output the ``$title`` variable, which we'll define later in the controller.
+Now, create a footer at *application/views/templates/footer.php* that
 includes the following code:
 
 ::
 
-			<em>&copy; 2014</em>
+			<em>&copy; 2015</em>
 		</body>
 	</html>
 
@@ -83,12 +83,12 @@
 
 Earlier you set up a controller with a ``view()`` method. The method
 accepts one parameter, which is the name of the page to be loaded. The
-static page templates will be located in the application/views/pages/
+static page templates will be located in the *application/views/pages/*
 directory.
 
-In that directory, create two files named home.php and about.php. Within
-those files, type some text − anything you'd like − and save them. If
-you like to be particularly un-original, try "Hello World!".
+In that directory, create two files named *home.php* and *about.php*.
+Within those files, type some text − anything you'd like − and save them.
+If you like to be particularly un-original, try "Hello World!".
 
 In order to load those pages, you'll have to check whether the requested
 page actually exists:
@@ -122,20 +122,21 @@
 In the header template, the ``$title`` variable was used to customize the
 page title. The value of title is defined in this method, but instead of
 assigning the value to a variable, it is assigned to the title element
-in the $data array.
+in the ``$data`` array.
 
 The last thing that has to be done is loading the views in the order
 they should be displayed. The second parameter in the ``view()`` method is
 used to pass values to the view. Each value in the ``$data`` array is
 assigned to a variable with the name of its key. So the value of
-``$data['title']`` in the controller is equivalent to $title in the view.
+``$data['title']`` in the controller is equivalent to ``$title`` in the
+view.
 
 Routing
 -------
 
 The controller is now functioning! Point your browser to
-[your-site-url]index.php/pages/view to see your page. When you visit
-index.php/pages/view/about you'll see the about page, again including
+``[your-site-url]index.php/pages/view`` to see your page. When you visit
+``index.php/pages/view/about`` you'll see the about page, again including
 the header and footer.
 
 Using custom routing rules, you have the power to map any URI to any
@@ -143,8 +144,8 @@
 ``http://example.com/[controller-class]/[controller-method]/[arguments]``
 
 Let's do that. Open the routing file located at
-application/config/routes.php and add the following two lines. Remove
-all other code that sets any element in the $route array.
+*application/config/routes.php* and add the following two lines.
+Remove all other code that sets any element in the ``$route`` array.
 
 ::
 
@@ -161,9 +162,9 @@
 More information about routing can be found in the URI Routing
 :doc:`documentation <../general/routing>`.
 
-Here, the second rule in the $routes array matches **any** request using
-the wildcard string (:any). and passes the parameter to the ``view()``
-method of the pages class.
+Here, the second rule in the ``$routes`` array matches **any** request
+using the wildcard string ``(:any)``. and passes the parameter to the
+``view()`` method of the ``Pages`` class.
 
-Now visit index.php/about. Did it get routed correctly to the ``view()``
+Now visit ``index.php/about``. Did it get routed correctly to the ``view()``
 method in the pages controller? Awesome!
